package cn.vote.uitls;

import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

public class HttpPostUtil {
	/**
	 * 通过url地址发起httpPost请求
	 * @param url 请求地址
	 * @param parmas 请求参数
	 * @return 得到请求地址的响应结果
	 */
	public static String httpPost(String url, List<? extends NameValuePair> parmas) {
		try {
			// 获取httpClient的一个执行对象
			HttpClient execution = new DefaultHttpClient();
			// 通过url参数创建一个HttpPost对象实例
			HttpPost httpPost = new HttpPost(url);
			// post请求参数设置：使用utf-8编码设置
			/**
			 * 平时开发web的时候，post提交一般都是使用jsp的表单提交(编码格式是：x-www-form-urlencoded)，所以
			 * 
			 * 应该构造这个格式的参数，这样，我们后台的Controller才能接受到post请求的参数
			 * 
			 */
			HttpEntity paramEntity = new UrlEncodedFormEntity(parmas, "UTF-8");
			httpPost.setEntity(paramEntity);
			// 使用执行对象指向httpPost请求:得到一个HttpResponse的响应对象
			HttpResponse httpResponse = execution.execute(httpPost);
			// 获取响应输出的实体对象：
			HttpEntity httpEntity = httpResponse.getEntity();
			// 通过内置实体转换工具类将实体对象转换成String对象返回
			return EntityUtils.toString(httpEntity);
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException("发起httpPost请求出错:" + e.getMessage());
		}
	}

	/**
	 * 通过url地址发起httpPost请求
	 * @param url  请求地址
	 * @param parmas 请求参数
	 * @return 得到请求地址的响应结果
	 */
	public static String httpPostOne(String url) {
		try {
			// 获取httpClient的一个执行对象
			HttpClient execution = new DefaultHttpClient();
			// 通过url参数创建一个HttpPost对象实例
			HttpPost httpPost = new HttpPost(url);
			// 使用执行对象指向httpPost请求:得到一个HttpResponse的响应对象
			HttpResponse httpResponse = execution.execute(httpPost);
			// 获取响应输出的实体对象：
			HttpEntity httpEntity = httpResponse.getEntity();
			// 通过内置实体转换工具类将实体对象转换成String对象返回
			return EntityUtils.toString(httpEntity);
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException("发起httpPost请求出错:" + e.getMessage());
		}
	}
}
